home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / rexx / rexxtrace.e < prev   
Text File  |  1994-05-02  |  3KB  |  87 lines

  1. /********************************************************************************
  2.  * << EUTILS HEADER >>
  3.  ********************************************************************************
  4.  ED         "edg"
  5.  EC         "ec -e"
  6.  PREPRO     "epp -t"
  7.  SOURCE     "RexxTrace.e"
  8.  EPPDEST    "R_EPP.e"
  9.  EXEC       "RexxTRace"
  10.  ISOURCE    ""
  11.  VERSION    "0"
  12.  REVISION   "0"
  13.  NAMEPRG    "RexxTRace"
  14.  NAMEAUTHOR "NasGûl"
  15.  ********************************************************************************
  16.  * HISTORY :
  17.  *******************************************************************************/
  18.  
  19. MODULE 'exec/ports','exec/nodes','exec/lists'
  20. MODULE 'rexxsyslib','rexx/rxslib','rexx/storage','rexx/errors'
  21. MODULE 'eropenlib','verslib'
  22. ENUM ER_NONE,ER_BADARGS,ER_PORT
  23. DEF action
  24. DEF myport:PTR TO mp
  25. PROC main() HANDLE /*"main()"*/
  26.     DEF myargs:PTR TO LONG,rdargs=NIL
  27.     myargs:=[0,0]
  28.     IF ReadArgs('OPEN/S,CLOSE/S',myargs,NIL)
  29.         IF myargs[0] THEN action:=RXTCOPN
  30.         IF myargs[1] THEN action:=RXTCCLS
  31.         FreeArgs(rdargs)
  32.     ELSE
  33.         Raise(ER_BADARGS)
  34.     ENDIF
  35.     IF (rexxsysbase:=OpenLibrary('rexxsyslib.library',VERS_REXXSYSLIB))=NIL THEN Raise(ER_REXXSYSLIBLIB)
  36.     IF (myport:=CreateMsgPort())=NIL THEN Raise(ER_PORT)
  37.     p_SendRexxMsg()
  38.     Raise(ER_NONE)
  39. EXCEPT
  40.     IF myport THEN DeleteMsgPort(myport)
  41.     IF rexxsysbase THEN CloseLibrary(rexxsysbase)
  42. ENDPROC
  43. PROC p_SendRexxMsg() /*"p_SendRexxMsg()"*/
  44.     DEF rc=FALSE
  45.     DEF rxmsg:PTR TO rexxmsg
  46.     DEF ap:PTR TO mp
  47.     DEF test:PTR TO LONG
  48.     DEF execmsg:PTR TO mn
  49.     DEF node:PTR TO ln
  50.     IF rxmsg:=CreateRexxMsg(myport,NIL,NIL)
  51.         execmsg:=rxmsg
  52.         node:=execmsg
  53.         node.name:='RexxTRace'
  54.         node.type:=NT_MESSAGE
  55.         node.pri:=0
  56.         execmsg.replyport:=myport
  57.         IF test:=CreateArgstring('',EstrLen(''))
  58.             CopyMem({test},rxmsg.args,4)
  59.             rxmsg.action:=action
  60.             rxmsg.passport:=myport
  61.             rxmsg.stdin:=Input()
  62.             rxmsg.stdout:=Output()
  63.             Forbid()
  64.             ap:=FindPort('REXX')
  65.             IF ap
  66.                 PutMsg(ap,rxmsg)
  67.             ENDIF
  68.             Permit()
  69.             IF ap
  70.                 WaitPort(myport)
  71.                 GetMsg(myport)
  72.                 rc:=rxmsg.result1
  73.                 IF rc<>0
  74.                     WriteF('RETURN Code \d \d\n',rc,rxmsg.result2)
  75.                 ENDIF
  76.             ELSE
  77.                 WriteF('REXX not Actif.\n')
  78.             ENDIF
  79.             ClearRexxMsg(rxmsg,16)
  80.         ENDIF
  81.         DeleteRexxMsg(rxmsg)
  82.     ENDIF
  83. ENDPROC
  84.  
  85.  
  86.  
  87.